home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr28
/
int9new.zip
/
KBFXNOTE.TXT
< prev
Wrap
Text File
|
1993-03-01
|
4KB
|
74 lines
SYMPTOMS:
ANY of the following:
1) The computer does not appear to accept characters until the user taps
<Ctrl>, <Alt> or <Shift>.
2) Characters appear in all capitals when <Caps Lock> is off.
3) Typing characters activates menu items in applications as if <Alt> is
"stuck."
4) Pressing enhanced keys -- the arrow keys, Home, End, Page Up and Page
Down, Insert or Delete -- causes a number to appear.
5) When using enhanced (101-key) keyboards with NUM-lock on, the Left-shift
key appears to be "stuck," and tapping this key returns keyboard func-
tionality to normal.
CAUSE:
Scan codes from the keyboard are overwritten before they can be processed
because too much time elapses before the BIOS keyboard handler can stop the
keyboard from sending more scan codes.
DETAIL:
The problem stems from the fact that the enhanced keyboard sends several
numbers or "scan codes" (4 scan codes for each keystroke when NUMlock is on)
for each press or release of the key. A specific scan code, E0, precedes each
of the others to indicate that the next scan code is to be treated as an
"enhanced" key.
When a key is pressed, these scan codes are sent in rapid succession to the
computer, each generating a request called an interrupt asking for service.
Each time a specific interrupt occurs, a series of commands called an In-
terrupt Service Routine (ISR) is performed at the processor. As each scan
code is received, an IRQ 1 is activated, which invokes the ISR for INT 9. One
of the first things the AT-BIOS does is to inhibit the keyboard from sending
further scan codes until it processes the one it just received.
This safety mechanism keeps the system from losing scan codes when the INT 9
goes directly into the BIOS routine and the keyboard is disabled immediately.
But applications can "hook" interrupts, which means they can install their own
interrupt handlers to be executed when interrupts occur. These programs pass
the interrupt through to other programs that are hooked into the interrupt,
one after another, until the request finally reaches the BIOS.
Each program that hooks INT 9 takes its turn to look at a given scan code
before it gets to the BIOS, delaying the request to disable the keyboard.
During that time, other scan codes can be sent and lost.
To further complicate matters, the machine can lose scan codes even after
the BIOS keyboard handler is invoked. Before the AT-BIOS handler can stop the
keyboard from sending more scan codes, it enables the processor to service
other interrupts (like the timer) during the keyboard ISR. Provided this new
interrupt's ISR executes quickly enough and returns control to the keyboard
handler before the pending scan code is replaced by a new one, no harm is
done.
Many Terminate-Stay-Resident programs (TSRs) such as REDIR.EXE or WPO.EXE hook
into the timer (INT 8) interrupt and may prolong the time it takes to complete
its ISR by a substantial amount. If an INT 8 occurs between the time the BIOS
reenables interrupts and the time it disables the keyboard, the keyboard is
likely to send at least one additional scan code, and that scan code may be
lost.
SOLUTION:
The symptoms described above can occur with any TSR that significantly prolongs
the amount of time it takes for the machine to process the keyboard interrupt,
not just with LANtastic software. Artisoft has written three programs which
may solve this problem even in situations where LANtastic is not involved.
KBFIX.EXE, KBFLOW.EXE and KBDFIX.SYS are available with instructions on how
to use them on the Artisoft BBS in a file called INT9FIX.ZIP, or by calling
Artisoft Technical Support. These programs are copyrighted but may be
distributed freely without modification.